package it.polimi.traveldream.ejb;

import it.polimi.traveldream.ejb.management.VoloDTO;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.*;


/**
 * The persistent class for the VOLO database table.
 * 
 */
@Entity
@NamedQueries({
	@NamedQuery(name="Volo.findAll", query="SELECT v FROM Volo v"),
	@NamedQuery(name="Volo.filtroAndata",query="SELECT v FROM Volo v WHERE v.aeroportoArrivo.citta=?1"),
	@NamedQuery(name="Volo.filtroRitorno",query="SELECT v FROM Volo v WHERE v.aeroportoPartenza.citta=?1"),
	@NamedQuery(name="Volo.updateDisp",query="UPDATE Volo v SET v.postiRimanenti=v.postiRimanenti-1 WHERE v.idVolo=?1"),
	@NamedQuery(name="Volo.findById", query="SELECT v FROM Volo v WHERE v.idVolo = ?1"),
	@NamedQuery(name="Volo.deleteById",query="DELETE FROM Volo v WHERE v.idVolo=?1"),
	//@NamedQuery(name="Volo.filtroData",query="SELECT v FROM Volo v WHERE v.data = ?1")
})
public class Volo implements Serializable {
	private static final long serialVersionUID = 1L;
	
	public static final String FINDALL = "Volo.findAll";
	
	public static final String UPDDISP = "Volo.updateDisp";
	
	public static final String FILTERAND = "Volo.filtroAndata";
	
	public static final String FILTERRIT = "Volo.filtroRitorno";
	
	public static final String FILTERDATA = "Volo.filtroData";
	
	public static final String FINDID = "Volo.findById";
	
	public static final String DELETE="Volo.deleteById";
	

	@Id
	private int idVolo;

	private String compagnia;

	private String numVolo;

	private int postiRimanenti;

	private int prezzo;
	
	@Temporal(TemporalType.DATE)
	private Date data;

	//bi-directional many-to-one association to Entita
	@ManyToOne
	@JoinColumn(name="AeroportoArrivo")
	private Aeroporto aeroportoArrivo;

	//bi-directional many-to-one association to Entita
	@ManyToOne
	@JoinColumn(name="AeroportoPartenza")
	private Aeroporto aeroportoPartenza;

	public Volo() {
	}

	public Volo(VoloDTO volo, Aeroporto aeroportoArr, Aeroporto aeroportoPar) {
		this.aeroportoArrivo = aeroportoArr;
		this.aeroportoPartenza = aeroportoPar;
		this.compagnia = volo.getCompagnia();
		this.numVolo = volo.getNumVolo();
		this.postiRimanenti = volo.getPostiRimanenti();
		this.prezzo = volo.getPrezzo();
		this.data = volo.getData();
	}

	public int getIdVolo() {
		return this.idVolo;
	}

	public void setIdVolo(int idVolo) {
		this.idVolo = idVolo;
	}

	public String getCompagnia() {
		return this.compagnia;
	}

	public void setCompagnia(String compagnia) {
		this.compagnia = compagnia;
	}

	public String getNumVolo() {
		return this.numVolo;
	}

	public void setNumVolo(String numVolo) {
		this.numVolo = numVolo;
	}

	public int getPostiRimanenti() {
		return this.postiRimanenti;
	}

	public void setPostiRimanenti(int postiRimanenti) {
		this.postiRimanenti = postiRimanenti;
	}

	public int getPrezzo() {
		return this.prezzo;
	}

	public void setPrezzo(int prezzo) {
		this.prezzo = prezzo;
	}

	public Aeroporto getAeroportoPartenza() {
		return this.aeroportoPartenza;
	}

	public void setAeroportoPartenza(Aeroporto aeroporto1) {
		this.aeroportoPartenza = aeroporto1;
	}

	public Aeroporto getAeroportoArrivo() {
		return this.aeroportoArrivo;
	}

	public void setAeroportoArrivo(Aeroporto aeroporto2) {
		this.aeroportoPartenza = aeroporto2;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

}